package com.mszlu.blog.service.impl;

import com.mszlu.blog.dao.mapper.TagMapper;
import com.mszlu.blog.dao.pojo.Tag;
import com.mszlu.blog.service.TagService;
import com.mszlu.blog.vo.Result;
import com.mszlu.blog.vo.TagVo;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@Service
public class TagServiceImpl implements TagService {

    @Autowired
    TagMapper tagMapper;
    @Override
    public List<TagVo> findTagsByArticleId(Long articleId) {
        List<Tag> tags = tagMapper.findByArticleId(articleId);
        List<TagVo> tagVos=copyList(tags);
        return tagVos;
    }

    @Override
    public Result hot(int limit) {
        //查询便签id集合
        List<Long> ids= tagMapper.findHotTagIds(limit);
        //避免查询结果为空
        if (CollectionUtils.isEmpty(ids)){
            return  Result.success(Collections.emptyList());
        }
        List<Tag> tags= tagMapper.findTagsByIds(ids);
        List<TagVo> tagVos = copyList(tags);
        return Result.success(tagVos);
    }

    //封装复制前端vo 对象。（value object）
    private List<TagVo> copyList(List<Tag> tags) {
        List<TagVo> tagVos =new ArrayList<>();
        for (Tag tag : tags) {
            TagVo tagVo=copy(tag);
            tagVos.add(tagVo);
        }
        return tagVos;

    }

    private TagVo copy(Tag tag) {
        TagVo tagVo=new TagVo();
        BeanUtils.copyProperties(tag,tagVo);
        return tagVo;
    }
}
